In a numerical control apparatus, a machining path along which a machine tool performs machining or the like is instructed by a machining program, which is basically composed of instructions by straight lines and circular arcs. However, in case where a machining contour is complicated, instructions composed of only straight lines and circular arcs would make an amount of machining program enormous.
Therefore, in a recent numerical control apparatus, various free curves can be instructed. As typical free curves, spline curves are known. A most popular spline curve among various spline curves is a base spline curve, i.e., a B-spline curve. The B-spline curve can be defined by a plurality of control vectors. In the B-spline curve, a parameter corresponding to a joint between segments is called a knot, and the value of the knot increases from the start point of the entire curve towards the end point thereof. A curve obtained by rationalizing a B-spline curve in which the increase in the number of knot is not uniform, is called an NURBS (Non-Uniform Rational B-Spline) curve.
The coordinate values of an NURBS curve or the like are specified when a variable is determined. Such a free curve is called parametric free curve. When such a free curve is used, a machining program for a complex-shape machining can be formed easily.
When machining a workpiece, a machining velocity has to be changed in accordance with an interpolation path. For example, when linear interpolation is changed into circular-arc interpolation having a small radius, a velocity in the circular-arc interpolation has to be generally suppressed low. This is because the interpolation path of a curve is instructed by a combination of small straight lines, so that, if the velocity is too high, then the distances of respective straight lines increase, and an error between a target curve and an actual interpolation path enlarges.
However, in the case of the interpolation by blocks of a straight line, a circular curve, or the like, a moving velocity can be determined in consideration of a contour at a corner portion such as a joint between blocks or of a change in velocity of individual axis of a machine. However, with respect to a free curve, a moving velocity cannot be determined in consideration of a change in velocity of each axis. More specifically, in the cases of a linear block and a circular-arc block, the change in velocity within the block can easily be calculated, so that it is also easy to determine a moving velocity according to a change in velocity. By contrast, in the case of a free curve, its curvature and the like changes at any time, so that an optimum interpolation velocity for the machining contour changes in accordance with the change in curvature. For this reason, it has been difficult to optimally control the velocity in accordance with these interpolation paths.